To my knowledge the protocol I describe here was developed by NEC (Now Renesas).
I've seen very similar protocol descriptions on the internet, and there the protocol is called Japanese Format.
I do admit that I don't know exactly who developed it.
What I do know is that it was used in my late VCR produced by Sanyo and was marketed under the name of Fisher.
NEC manufactured the remote control IC.
This description was taken from my VCR's service manual.
Those were the days, when service manuals were filled with useful information!
The NEC protocol uses pulse distance encoding of the bits. Each pulse is a 560µs long 38kHz carrier burst (about 21 cycles). A logical "1" takes 2.25ms to transmit, while a logical "0" is only half of that, being 1.125ms. The recommended carrier duty-cycle is 1/4 or 1/3.
The picture above shows a typical pulse train of the NEC protocol.
With this protocol the LSB is transmitted first.
In this case Address $59 and Command $16 is transmitted.
A message is started by a 9ms AGC burst, which was used to set the gain of the earlier IR receivers.
This AGC burst is then followed by a 4.5ms space, which is then followed by the Address and Command.
Address and Command are transmitted twice.
The second time all bits are inverted and can be used for verification of the received message.
The total transmission time is constant because every bit is repeated with its inverted length.
If you're not interested in this reliability you can ignore the inverted values, or you can expand the Address and Command to 16 bits each!
Keep in mind that one extra 560µs burst has to follow at the end of the message in order to be able to determine the value of the last bit.
A command is transmitted only once, even when the key on the remote control remains pressed. Every 110ms a repeat code is transmitted for as long as the key remains down. This repeat code is simply a 9ms AGC pulse followed by a 2.25ms space and a 560µs burst.
The NEC protocol is so widely used that soon all possible addresses were used up.
By sacrificing the address redundancy the address range was extended from 256 possible values to approximately 65000 different values.
This way the address range was extended from 8 bits to 16 bits without changing any other property of the protocol.
By extending the address range this way the total message time is no longer constant.
It now depends on the total number of 1's and 0's in the message.
If you want to keep the total message time constant you'll have to make sure the number 1's in the address field is 8 (it automatically means that the number of 0's is also 8).
This will reduce the maximum number of different addresses to just about 13000.
The command redundancy is still preserved. Therefore each address can still handle 256 different commands.
Keep in mind that 256 address values of the extended protocol are invalid because they are in fact normal NEC protocol addresses. Whenever the low byte is the exact inverse of the high byte it is not a valid extended address.
Application Note AN-1184 from Renesas, previously called NEC.